#include <bits/stdc++.h>
using namespace std;
const int N=1005;
int p[N];
int find(int x){
    return p[x]==x?x:p[x]=find(p[x]);
}
void join(int a,int b){
    int fa=find(a);
    int fb=find(b);
    p[fa]=fb;
}
int n,m,u,v;
int gg[2000][2000];
int main(void){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        p[i]=i;
    }
    while(m--){
        scanf("%d%d",&u,&v);
        if(find(u)!=find(v)){
            join(u,v);
        }
    }
    int cnt=0;
    for(int i=1;i<=n;i++){
        if(p[i]==i){
            cnt++;
        }
    }
	for(int i=0;i<int(2e4);i++){
		for(int j=0;j<int(2e4);j++){
			int ans=0;
		}
	}
    printf("%d\n",cnt-1);
}
